iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

Hello Swift系列 第 19

19/30 轉來轉去的Segues-4

  • 分享至 

  • xImage
  •  

(18/30 轉來轉去的Segues-3)

  • 第二個畫面(LightRedViewController.swift)
    服從此協定的類別需實做setColor方法:
protocol LightRedViewControllerDelegate {
    func setColor(colorType:String)
}

class服從的協定:

class LightRedViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate
//專門用來接受第一個畫面所傳資料的屬性
//Optional String不用初始化
var inforFromViewOne:String?

//新增屬性
//delegate的值為ViewController(第一個畫面)
var delegate:LightRedViewControllerDelegate?
//PickerView顯示的資料
let colorArray = ["red","green","blue"]

viewDidLoad:

//將第一個畫面傳來的inforFromViewOne設定給myLable顯示
myLabel.text = inforFromViewOne
//服從協定
myPickerView.dataSource = self
myPickerView.delegate = self

PickerView的設定:

//顯示橫列的數量
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
//顯示直列的數量
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return colorArray.count
    }
    
//顯示的內容
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return colorArray[row]
    }

設置返回按鈕:

@IBAction func backtoView1(_ sender: UIButton) {
    let colorNumber = myPickerView.selectedRow(inComponent: 0)
    let color = colorArray[colorNumber]
    //將顏色字串當作參數呼叫delegate,執行setColor方法
    delegate?.setColor(colorType: color)
    navigationController?.popViewController(animated: true)
}

Results

http://sendvid.com/79a85k03


上一篇
18/30 轉來轉去的Segues-3
下一篇
20/30 OOPS!物件導向程式設計-1
系列文
Hello Swift30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言